home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 / Aminet - June 1993 [Walnut Creek].iso / usenet / sources / volume90 / util / lf / part01
Encoding:
Internet Message Format  |  1990-04-15  |  23.0 KB

  1. Path: wuarchive!zaphod.mps.ohio-state.edu!uakari.primate.wisc.edu!xanth!cs.odu.edu!Amiga-Request
  2. From: Amiga-Request@cs.odu.edu (Amiga Sources/Binaries Moderator)
  3. Newsgroups: comp.sources.amiga
  4. Subject: v90i150: lf - list functions in c source, Part01/01
  5. Message-ID: <12224@xanth.cs.odu.edu>
  6. Date: 15 Apr 90 15:09:39 GMT
  7. Sender: tadguy@cs.odu.edu
  8. Reply-To: bevis@en.ecn.purdue.edu
  9. Lines: 594
  10. Approved: tadguy@cs.odu.edu (Tad Guy)
  11. X-Mail-Submissions-To: Amiga@cs.odu.edu
  12. X-Post-Discussions-To: comp.sys.amiga
  13.  
  14. Submitted-by: bevis@en.ecn.purdue.edu
  15. Posting-number: Volume 90, Issue 150
  16. Archive-name: util/lf/part01
  17.  
  18. [ uuencoded executable enclosed.  ...tad ]
  19.  
  20. This nifty little program will provide you with a complete listing of all
  21. C functions contained within specified files.  
  22.  
  23. The source code provided will compile equally well under UNIX or Amiga 
  24. Lattice.
  25.  
  26. -Jeff
  27.  
  28. #!/bin/sh
  29. # This is a shell archive.  Remove anything before this line, then unpack
  30. # it by saving it into a file and typing "sh file".  To overwrite existing
  31. # files, type "sh file -c".  You can also feed this as standard input via
  32. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  33. # will see the following message at the end:
  34. #        "End of archive 1 (of 1)."
  35. # Contents:  lf.c lf.doc lf.uu makefile
  36. # Wrapped by tadguy@xanth on Sun Apr 15 11:09:28 1990
  37. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  38. if test -f 'lf.c' -a "${1}" != "-c" ; then 
  39.   echo shar: Will not clobber existing file \"'lf.c'\"
  40. else
  41. echo shar: Extracting \"'lf.c'\" \(4150 characters\)
  42. sed "s/^X//" >'lf.c' <<'END_OF_FILE'
  43. X/****************************************************************
  44. X *                                *
  45. X * lf.c - list functions in a c source file        V1.1    *
  46. X *                                *
  47. X * (c) 1989 Jeff Bevis                        *
  48. X *                                *
  49. X ****************************************************************
  50. X *                                *
  51. X * Command line options                        *
  52. X *                                *
  53. X * -s    Suppress line number printing.                *
  54. X * -c    Format output for C function declarations        *
  55. X * -n    Force normal formatting                    *
  56. X *                                 *
  57. X ****************************************************************/
  58. X
  59. X#include <stdio.h>
  60. X
  61. XFILE *s;
  62. Xchar c,buf[400],cget();
  63. Xint mode,col,linecount;
  64. Xchar    c_flag,s_flag,nofile;
  65. X
  66. Xmain(argc,argv)
  67. Xint argc;
  68. Xchar **argv;
  69. X{
  70. X int t;
  71. X
  72. X if(argc>1)
  73. X  {
  74. X   for(t=1;t<argc;t++)
  75. X    {
  76. X     if(*argv[t]=='-')
  77. X      {
  78. X       int s;
  79. X
  80. X       for(s=1;s<strlen(argv[t]);s++)
  81. X    {
  82. X     switch(*(argv[t]+s))
  83. X      {
  84. X       case 's':    s_flag++; break;
  85. X       case 'c':    c_flag++; break;
  86. X       case 'n':    s_flag=0;
  87. X            c_flag=0; break;
  88. X       default:    if(!c_flag) printf("Unrecognized option: %c\n",*(argv[t]+s));
  89. X      }
  90. X    }
  91. X       continue;
  92. X      }
  93. X     s=fopen(argv[t],"r");
  94. X     if(s)
  95. X      {
  96. X       if(c_flag) printf("/*\n * Functions from %s\n */\n",argv[t]);
  97. X       else printf("FILE: %s\n",argv[t]);
  98. X       find();
  99. X       fclose(s);
  100. X      }
  101. X     else
  102. X      {
  103. X       if(c_flag) printf("/* FILE: %s NOT PRESENT! */\n",argv[t]);
  104. X       else printf("Can't open file %s.\n",argv[t]);
  105. X      }
  106. X    }
  107. X  }
  108. X else
  109. X  {
  110. X   if(c_flag) printf("/* No files specified for lf */\n");
  111. X   else printf("You must specify a C source file.\n");
  112. X   exit(10);
  113. X  };
  114. X}
  115. X
  116. Xfind()
  117. X{
  118. X int comlev=0,depth=0,cnt=0;
  119. X
  120. X linecount=0;
  121. X col=0;
  122. X c=0;
  123. X
  124. X while(c!=EOF)
  125. X  {
  126. X   c=cget(s);
  127. X   if(comlev==1 && c!='*') comlev=0;
  128. X
  129. X   switch(c)
  130. X    {
  131. X     case '\n':    buf[cnt]='\0';
  132. X        think(cnt);
  133. X        cnt=0;
  134. X        break;
  135. X     case '#':    if(col==1) readtoeol();   /* skip over preprocessor lines */
  136. X        break;
  137. X     case '\\': c=cget(s);
  138. X        break;
  139. X     case '/':    comlev=1;
  140. X        break;
  141. X     case '*':    if(comlev==1) readto_eocomment();
  142. X        break;
  143. X     case '\"': readto_eoquote();
  144. X        break;
  145. X     case '\'':    readto_eochar();
  146. X        break;
  147. X     case '{':    depth++;
  148. X        break;
  149. X     case '}':    depth--;
  150. X        break;
  151. X    }
  152. X   if(depth==0 && comlev==0 && c!=EOF && c!='\n') buf[cnt++]=c;
  153. X  }
  154. X}
  155. X
  156. Xreadtoeol()
  157. X{
  158. X c=cget(s);
  159. X while(c!=EOF && c!='\n') c=cget(s);
  160. X}
  161. X
  162. Xreadto_eocomment()
  163. X{
  164. X c=cget(s);
  165. X
  166. X while(c!=EOF)
  167. X  {
  168. X   if(c=='*')
  169. X    {
  170. X     c=cget(s);
  171. X     if(c=='/') return;
  172. X    }
  173. X   else c=cget(s);
  174. X  }
  175. X}
  176. X
  177. Xreadto_eoquote()
  178. X{
  179. X c=cget(s);
  180. X while(c!=EOF && c!='\"') c=cget(s);
  181. X}
  182. X
  183. Xreadto_eochar()
  184. X{
  185. X c=cget(s);
  186. X while(c!=EOF && c!='\'') c=cget(s);
  187. X}
  188. X
  189. Xthink(cnt)
  190. X{
  191. X int z;
  192. X z=cnt;
  193. X
  194. X if(z>2)
  195. X  {
  196. X   z--;
  197. X   while((buf[z]==' ' || buf[z]=='\t') && z>1) z--;
  198. X   buf[z+1]='\0';
  199. X   if(buf[z]==')')
  200. X    {
  201. X     if(c_flag)
  202. X      {
  203. X       int tc,r,tspot=0,vd=1,validchar=0,checknow=0;
  204. X
  205. X       for(r=z;r>0;r--)        /* find first space before function parentheses */
  206. X        {
  207. X         if(buf[r]==' ' || buf[r]=='\t')    /* if a whitespace */
  208. X      {
  209. X       if(validchar)    /* and we're ready to accept one */
  210. X        {
  211. X         tspot=r;        /* remember the tab-spot */
  212. X         vd=0;
  213. X         break;        /* leave loop */
  214. X        }
  215. X      }
  216. X     else if(checknow) validchar=1;      /* if first non-space before parentheses, must be function name.  OK to look for leading space now */
  217. X     else if(buf[r]=='(') checknow=1; /* see if we left the function parentheses */
  218. X    }
  219. X       for(r=tspot;r<=z;r++)    /* find leftmost parentheses of function decl after tspot */
  220. X    {
  221. X     if(buf[r]=='(')
  222. X      {
  223. X       buf[r+1]=')';
  224. X       buf[r+2]='\0';
  225. X       break;
  226. X      }
  227. X    }
  228. X       if(vd) printf("void\t\t\t%s;\n",buf);
  229. X       else
  230. X    {
  231. X     for(r=0;r<tspot;r++) putchar((int)buf[r]);
  232. X     tc=3-(tspot>>3);        /* tab size of 8, 2^3) */
  233. X     for(r=0;r<tc;r++) putchar('\t');
  234. X     printf("%s;\n",buf+tspot+1);
  235. X    }
  236. X      }
  237. X     else if(s_flag) printf("%s\n",buf);    /* no line num */
  238. X     else printf("\t%4d: %s\n",linecount,buf);    /* default mode */
  239. X     return;
  240. X    }
  241. X  }
  242. X}
  243. X
  244. Xchar cget(f)
  245. XFILE *f;
  246. X{
  247. X char c;
  248. X c=getc(f);
  249. X if(c=='\n') 
  250. X  {
  251. X   linecount++;
  252. X   col=0;
  253. X  }
  254. X else col++;
  255. X if(c=='\\')        /* if escape slash is read, */
  256. X  {
  257. X   c=getc(f);        /* get char after escape */
  258. X   return(cget(f));    /* return next non-escape char after that */
  259. X  }
  260. X return(c);
  261. X}
  262. END_OF_FILE
  263. if test 4150 -ne `wc -c <'lf.c'`; then
  264.     echo shar: \"'lf.c'\" unpacked with wrong size!
  265. fi
  266. # end of 'lf.c'
  267. fi
  268. if test -f 'lf.doc' -a "${1}" != "-c" ; then 
  269.   echo shar: Will not clobber existing file \"'lf.doc'\"
  270. else
  271. echo shar: Extracting \"'lf.doc'\" \(831 characters\)
  272. sed "s/^X//" >'lf.doc' <<'END_OF_FILE'
  273. Xlf - (c) 1989 by Jeff Bevis
  274. X
  275. XThis nifty little program will provide you with a complete listing of all
  276. XC functions contained within specified files.  Usage is as follows:
  277. X
  278. X    lf [-scn] file.c [[-scn] file.c]
  279. X
  280. XAny number of files may be specified on the command line.  The options are
  281. Xas follows:
  282. X
  283. X    -s    Suppress printing of line numbers.  By default, line numbers
  284. X        are printed.
  285. X
  286. X    -c    Generate C source code in the form of function declarations.
  287. X        I use this option to generate function declaration headers
  288. X        (def.h) files for my larger programs.
  289. X
  290. X    -n    Force normal formatting again.  Since flags can be specified
  291. X        anywhere on the command line (before or after files), you
  292. X        can cancel the c and s options for subsequent files with
  293. X        this option.
  294. X
  295. XThe source code provided will compile equally well under UNIX or Amiga 
  296. XLattice.
  297. X
  298. X-Jeff
  299. END_OF_FILE
  300. if test 831 -ne `wc -c <'lf.doc'`; then
  301.     echo shar: \"'lf.doc'\" unpacked with wrong size!
  302. fi
  303. # end of 'lf.doc'
  304. fi
  305. if test -f 'lf.uu' -a "${1}" != "-c" ; then 
  306.   echo shar: Will not clobber existing file \"'lf.uu'\"
  307. else
  308. echo shar: Extracting \"'lf.uu'\" \(14446 characters\)
  309. sed "s/^X//" >'lf.uu' <<'END_OF_FILE'
  310. Xbegin 644 lf
  311. XM```#\P`````````#``````````(```>:```!?0```<0```/I```'FDCG?OXD[
  312. XM2"0`2?D`````+'@`!$?Y```#`'(`(#P```$$8`(FP5'(__PI3P-`*4X#.$*LD
  313. XM`SQP`"(\```P`$ZN_LY#^@%:<`!.KOW8*4`&/&8&<&1@``#\)FX!%"EK`)@#]
  314. XM-$JK`*QG:"`/D*\`!`:`````@"E``P0@:P"LT<C1R")H`!#3R=/)(`)R`!(9&
  315. XM*4D#2-"!4H!"9U*``D#__I_`58!"=P@`(`)3@-2!'[(``"``4X)1R/_V'[P`(
  316. XM("``4X(?L2``(`!1RO_X(D\O"6!R*6L`.@,$<']2@-&L`P1!ZP!<3J[^@$'KZ
  317. XM`%Q.KOZ,*4`#/"\`)$`@*@`D9Q(L;`8\($`B*```*4$#-$ZN_X(B*@`@9QHDW
  318. XM/````^U.KO_B*4`#1&<*Y8@@0"=H``@`I"!L`SPO"$AL`P`@:``D*6@`!`-(W
  319. XM3KH`9DZZ%6YP`&`$("\`!"\`("P#+&<$($!.D$ZZ$$8L>``$(FP&/$ZN_F).S
  320. XMN@`\2JP#/&<:(BP#1&<$3J[_W"QX``1.KO]\(FP#/$ZN_H8@'RYL`T!,WW]^S
  321. XM3G5D;W,N;&EB<F%R>0!.=4YU2.<#$"9O`!`@2TH89OQ3B)'++`A^`!X;2H=GB
  322. XM,E.L`2IM%B!L`2)#Z``!*4D!(B`'$(!R`!(`8-P@!W(`$@!(;`$>+P%.N@%VS
  323. XM4$\B`&#&2&P!'DAX__].N@%D4$\@!DS?",!.=0```````'!A3E7_W$CG#S`F#
  324. XM;P!$?`!![0`,*TC_\AX;2@=G``$*<"6^`&8``,P>&W``$`=R&%U!:P``B+![4
  325. XM$`AF]$[[$`0`9&```%``>&```!H`<&```!0`<V````(@;?_R)%@K2/_R8$H@V
  326. XM;?_R*!@K2/_R1>W_['H'2H5K%B`$<@_`@4'Z`,#1P!204XKHA%.%8.9"+?_M(
  327. XM8!H@;?_R*!@K2/_R+P1(;?_E3KH6V%!/1>W_Y2\*3KK^Y%A/W(!@`/]>4H93A
  328. XMK`$J;1@@;`$B0^@``2E)`2(@!Q"`<@`2`&``_SYP`!`'2&P!'B\`3KH`:E!/^
  329. XM(@!@`/\H4H93K`$J;1@@;`$B0^@``2E)`2(@!Q"`<@`2`&``_PAP`!`'2&P!^
  330. XM'B\`3KH`-%!/(@!@`/[R2&P!'DAX__].N@`@(`9,[0SP_\1.74YU,#$R,S0U.
  331. XM-C<X.4%#1$5&````3E7_[$CG+Q`N+P`T)F\`."@'<#'`JP`89P9P_V```G`(4
  332. XM*P`'`!I6P$0`2(!(P"P`2JL`%&8``(0(*P`"`!MF>G``)T``#'+_OH%G``)"#
  333. XM+PM.NA4J6$]*@&<,".L`!0`;</]@``(J".L``0`;2@9G#B`K`!0B`$2!)T$`U
  334. XM#&`(("L`%"=```Q3JP`,;18@:P`$0^@``2=)``0@!Q"`<@`2`&`2(`=R`!(`:
  335. XM+PLO`6$`_U)03R(`(`%@``'6""L``@`;9UAP_[Z`9@9P`&```<(@!QM`__]*Z
  336. XM!F<B<@J^@68<<@(O`4AZ`;(O*P`<*T'_\$ZZ#>Q/[P`,*@!@&G(!+P%(;?__[
  337. XM+RL`'"M!__!.N@W03^\`#"H`?O]@``#@".L``0`;2@9G4G#_OH!G3%2K``QR<
  338. XM"KZ!9B8@:P`$0^@``2=)``00O``-(BL`#$J!:PHO"R\`80#^KE!/4JL`#"!K?
  339. XM``1#Z``!)TD`!"`'$(`B*P`,2H%K``$<?O\@*P`$D*L`$"M`__!G<@@K``8`*
  340. XM&F=22'@``D*G+RL`'$ZZ!EA/[P`,*T#_[$H&9SA3K?_L;3)"IR\M_^PO*P`<9
  341. XM3KH&.$AX``%(;?_]+RL`'$ZZ%8Q/[P`82JP#&&8*$"W__7(:L`%GR"\M__`O-
  342. XM*P`0+RL`'$ZZ#/!/[P`,*@!@`GH`</^Z@&8(".L`!0`;8`RZK?_P9P8(ZP`$5
  343. XM`!M*!F<.(BL`%"0!1((G0@`,8!@(*P`"`!MG"'(`)T$`#&`((BL`%"=!``P@;
  344. XM:P`0)T@`!+Z`9RY3JP`,;18@:P`$0^@``2=)``0@!Q"`<@`2`&`2(`=R`!(`5
  345. XM+PLO`6$`_9!03R(`<##`JP`89P1P_V`,</^X@&8$<`!@`B`$3-\(]$Y=3G4-K
  346. XM"@````````````!P84CG!Q`F;P`4""L`!P`:5L!$`$B`2,`N`'`PP*L`&&<**
  347. XM0JL`"'#_8``!6`@K``<`&V<4""L`!@`;9PPO"TAX__].NOT:4$]*JP`49C9"1
  348. XMJP`(""L``@`;9Q)P`2=``!1!ZP`@)T@`$&```(0O"TZZ$FI83TJ`9W8(ZP`%;
  349. XM`!MP_V```0!*!V=F5*L`""`K``A*@&Y:(&L`!$/H``$G20`$?``<$"`&#(``^
  350. XM```:9RX,@`````UF,E.K``AM%"!K``1#Z``!)TD`!'``$!!@``"T+PMA`/\N"
  351. XM6$]@``"H".L`!``;</]@``"<(`9@``"6""L``0`;9DX(ZP```!LO*P`4+RL`A
  352. XM$"\K`!Q.NA.H3^\`#"H`2H5J!@CK``4`&TJ%9@8(ZP`$`!M*A6\:2@=G"B`%;
  353. XM1(`G0``(8`0G10`((&L`$"=(``1P,L"K`!AG%DH'9PAP_R=```A@!G``)T``6
  354. XM"'#_8"!3JP`(;1(@:P`$0^@``2=)``1P`!`08`@O"V$`_H183TS?".!.=0``]
  355. XM+FP#0$ZZ%$Y(>0```!1.N@8T``````````!P84CG(#`F;P`0)$M*$F<D<``0I
  356. XM$D'L`6T(,``!"`!G"G(`$@!T()*"8`1R`!(`%(%2BF#8(`M,WPP$3G4`````%
  357. XM`````'!A3E7_^$CG`S`F;P`@)&\`)"XO`"@@2DH89OQ3B)'*+`@@2TH89OQ38
  358. XMB)'+(`@B2]/`*TG_^+R'8P(L!R`&($I@`A+84X!D^B!M__A",&@`(`M,WPS`?
  359. XM3EU.=2!O``0@"$H89OQ32)'`(`A.=0``("\`""!O``1.5?_T(D]R"DZZ"&`&G
  360. XM00`P$L%*@&;P(`D0X;_)9OI"$)"/3EU.=0``("\`""!O``1.5?_T(D\B``)!;
  361. XM``<&00`P$L'FB&;P(`D0X;_)9OI"$)"/3EU.=0``,#$R,S0U-C<X.6%B8V1ER
  362. XM9B`O``@@;P`$0^\`!#(``D$`#Q+[$-SHB&;R(`DB#UB!$.&RB6;Z0A"0@4YUP
  363. XM(&\`!")(<@!P`"\"#!``*V<&#!``+68"4D@0&`0``#!M$@P```EN#"0!Y8'26
  364. XM@M*!TH!@Y@P1`"UF`D2!)!\@"%.`(&\`"""!D(E.=2\'+B\`"%*L!C13K`$JS
  365. XM;18@;`$B0^@``2E)`2(@!Q"`<@`2`&`4(`=R`!(`2&P!'B\!3KKY[%!/(@`NL
  366. XM'TYU3E4``"\+)F\`#$*L!C1(;0`,+PM(>O^L3KH,NDAL`1Y(>/__3KKYO"`L8
  367. XM!C0F;?_\3EU.=0``3E7_YDCG#S`F;P`Z+B\`/D(M__]"K`,8*VP&./_R>@.Z)
  368. XMK`#@;!(@!>>`0>P$]$JP"`!G!%*%8.@@+`#@L(5F#'`8*4`&.'#_8``!*B`%H
  369. XMYX!![`3TT<`D2$JM`!!G"`@M``(`$V<**WP```/L_^Y@""M\```#[O_N(#P`&
  370. XM`(``P*P`^+&'"`<``V<,(`<"0/_\+@``1P`"(`=R`\"!#(`````"9PP,@```F
  371. XM``%G!$J`9@8L!U*&8`QP%BE`!CAP_V```+0@!P*````#`&<``(@(!P`*9Q8;5
  372. XM?``!__\O+?_N+PM.N@3V4$\H`&`\"`<`"6862'@#[2\+3KH$F%!/*`!*A&H$(
  373. XM",<`"0@'``EG&AM\``'__REM__(&."\M_^XO"TZZ!1Q03R@`2BW__V<V(`=RJ
  374. XM>-*!P(%*@&<J2H1K)B\$3KH%9$AX`^TO"TZZ!$9/[P`,*`!@#DAX`^TO"TZZX
  375. XM!#103R@`2JP#&&<$</]@""2&)40`!"`%3-\,\$Y=3G4`````````````````C
  376. XM``````````````````````!P84CG#Q`N+P`8+"\`'"HO`"`O!TZZ!?A83R9`,
  377. XM(`MF!'#_8!XO!2\&+RL`!$ZZ`P!/[P`,*`!*K`,89P1P_V`"(`1,WPCP3G4`=
  378. XM`$CG`S`N+P`42H=N!G``8```I'`(OH!D`BX`(`=6@"X``D?__$7L`/`F4B`+)
  379. XM9T`@*P`$L(=M,K"'9@P@4R2(GZP`]"`+8&X@*P`$D(=R"+"!918@2]'')(@DK
  380. XM2"23)4``!)^L`/0@"V!,)$LF4V"\(`<B+`%HT(%3@$ZZ!(8B+`%H3KH$7BP`C
  381. XM4(8@!E:`+``"1O_\+P9.N@6>6$\F0"`+9Q(O!B\+3KH-ABZ'80#_5%!/8`)PV
  382. XM`$S?#,!.=0``````````````````3E7_\$CG#S`F;P`T)&\`.$JJ`!AG""\*"
  383. XM3KH/!EA/*BP!9'X!<``0,W@`#$``8F<*#$``868,>@!@!BH\``"``%*'<BNR5
  384. XM,W@`5\!$`$B`2,`H`'``$!,,0`!W9P``B`Q``')G0@Q``&%F``"^2'@`#"\\R
  385. XM``"!`B\M``A.NOS83^\`#"P`</^\@&8&<`!@``#02H1G!G!`T(!@`G`"+@``M
  386. XM1T``8```B$J$9P1P`F`"<```0(``2'@`#"\`+RT`"$ZZ_)1/[P`,+`!P_[R`$
  387. XM9@9P`&```(Q*A&<&<$#0@&`"<`$N`&!(2H1G!'`"8`)P`0!`@```0`$``$`"M
  388. XM`$AX``PO`"\M``A.NOQ.3^\`#"P`</^\@&8$<`!@1DJ$9P9P0-"`8`)P`BX`/
  389. XM8`1P`&`RD<@E2``0<``E0``4)48`'"5J`!``!"5```PE0``(2H5F!B`\``"`$
  390. XM`"('@H`E00`8(`I,WPSP3EU.=0``````````<&%(YP,0+B\`$$?L`/P@"V<T=
  391. XM""L``@`;9B@(*P`!`!MG("`K``20JP`0+`!*AF<2+P8O*P`0+RL`'$ZZ!#)/E
  392. XM[P`,)E-@R"\'3KH+(%A/3-\(P$YU``!(YS<0+B\`'"9O`"`L+P`D2JP#,&<$9
  393. XM3KH/W$*L`Q@B!R0+)@8L;`8\3J[_T"H`</^Z@&8.3J[_?"E``QAP!2E`!C@@C
  394. XM!4S?".Q.=0``````````````````2.<_`"XO`!PL+P`@*B\`)$JL`S!G!$ZZB
  395. XM#X1"K`,8(`53@"(')`8F`"QL!CQ.KO^^*`!P_[B`9@Y.KO]\*4`#&'`6*4`&3
  396. XM."`%#(`````"9Q8,@`````%G"$J`9A@@!F`4(`30AF`.(@=T`'8`+&P&/$ZN7
  397. XM_[Y,WP#\3G4``$CG-Q`N+P`<)F\`("PO`"1*K`,P9P1.N@\(0JP#&"(')`LF$
  398. XM!BQL!CQ.KO_6*@!P_[J`9@Y.KO]\*4`#&'`%*4`&."`%3-\([$YU``!(YR,0X
  399. XM)F\`%"XO`!A*K`,P9P1.N@[`0JP#&"(+)`<L;`8\3J[_XBP`2H9F$DZN_WPIT
  400. XM0`,8<`(I0`8X</]@`B`&3-\(Q$YU``!.5?_\2.<A$"9O`!A*K`,P9P1.N@YXR
  401. XM0JP#&"(+=/XL;`8\3J[_K"X`2H=G"B('3J[_IG#_8"8B"R0\```#[DZN_^(NA
  402. XM`$J'9A).KO]\*4`#&'`"*4`&.'#_8`(@!TS?"(1.74YU3E7__$CG(1`F;P`8E
  403. XM2JP#,&<$3KH.%$*L`Q@B"W3^+&P&/$ZN_ZPN`$J'9PPB!TZN_Z8B"TZN_[@BE
  404. XM"R0\```#[DZN_^(N`$J'9A).KO]\*4`#&'`"*4`&.'#_8`(@!TS?"(1.74YUA
  405. XM```O!RXO``A*K`,P9P1.N@VR(@<L;`8\3J[_W'``+A].=4CG,``D`"8!2$)(,
  406. XM0\3!QL#`P=1#2$)"0M""3-\`#$YU2H!J```>1(!*@6H```Q$@6$``"!$@4YUE
  407. XM80``&$2`1(%.=4J!:@``#$2!80``!D2`3G4O`DA!-`%F```B2$!(04A"-`!GF
  408. XM```&A,$P`DA`-`"$P3`"2$(R`B0?3G4O`W80#$$`@&0```;AF5%##$$(`&0`J
  409. XM``;IF5E##$$@`&0```;EF55#2D%K```&XYE30S0`YJA(0D)"YJI(0X#!-@`PQ
  410. XM`C0#2$'$P9""9```"%-#T(%D_G(`,@-(0^>X2$#!028?)!].=2\'+B\`"'``_
  411. XM*4`#&$J':R*^K`#@;!P@!^>`0>P$]$JP"`!G#B`'YX!![`3TT<`@"&`(<`DI4
  412. XM0`8X<``N'TYU``!(YP`R)FP&0"`+9Q0D4R)+("L`""QX``1.KO\N)DI@Z)'(V
  413. XM*4@&1"E(!D!,WTP`3G5(YP$R+B\`%'`,WH`@!W(`+'@`!$ZN_SHF0"`+9@1PZ
  414. XM`&`Z)T<`"$7L!D`@:@`$)T@`!)'()HA*DF8")(M*J@`$9P8B:@`$(HLE2P`$8
  415. XM2JP`Y&8$*4L`Y$'K``P@"$S?3(!.=0``````````````````2.<',"XO`!@FW
  416. XM;P`<+"\`("\'3KK_#%A/)$`@"F8$</]@-@@J``,``V<02'@``D*G+P=.NOC@C
  417. XM3^\`#"\&+PLO*@`$3KK[I$_O``PJ`$JL`QAG!'#_8`(@!4S?#.!.=0``3E7_?
  418. XMQ$CG)S`F;P!<)&\`8'X`?`!Z`'``&WP`(/_[<@`K0?_V=/\K0O_R0>W_T!M`_
  419. XM__$;0/_\*T'_Y"M!_^@K2/_,2A-G+'``$!,$0``@9Q170&<444!G"%5`9A9^I
  420. XM`6`.?`%@"GH!8`8;?``!__Q2BV#0$!-R,+`!9@92BQM!__MP*K`39@P@4EB27
  421. XM*U#_]E*+8`Y(;?_V+PM.NO6^4$_7P!`3<BZP`68B4HMP*K`39@P@4EB2*U#_.
  422. XM\E*+8`Y(;?_R+PM.NO644$_7P!`3<FRP`68*&WP``?_Q4HM@"')HL`%F`E*+C
  423. XM$!MR`!(`&T#_\`1!`%AG``%^!$$`"V<``@I306<D!$$`"V<``1)306<``5!7+
  424. XM06<``;I506<``.1706<``5)@``'X2BW_\6<((%)8DB`08`8@4EB2(!`K0/_L9
  425. XM;`IR`42M_^PK0?_H2JW_Z&<$<"U@"DH&9P1P*V`"<"`;0/_0<``0!B(M_^B"8
  426. XM@'``$`6"@&<(4JW_S%*M_^0O+?_L+RW_S$ZZ]#903RM`_\@@+?_R2H!J!G(!^
  427. XM*T'_\B`M_\@B+?_RDH!([0`"_\1O-"!M_\PB2-/!+P`O"2\(3KH&HD_O``QP^
  428. XM`!`M__LB+?_$(&W_S&`"$,!3@63Z("W_\BM`_\C1K?_D0>W_T"M(_\Q*!V<`)
  429. XM`3`;?``@__M@``$F2BW_\6<((%)8DB`08`8@4EB2(!`K0/_L8`#_9$HM__%GD
  430. XM""!26)(@$&`&(%)8DB`0*T#_[$HM__QG$B!M_\P0_``P<@$K0?_D*TC_S"\`*
  431. XM+RW_S$ZZ\YI03RM`_\A@`/\R&WP`,/_[("W_\DJ`:@9P""M`__)*+?_Q9P@@A
  432. XM4EB2(!!@!B!26)(@$"M`_^Q*+?_\9Q8@;?_,$/P`,!#\`'AR`BM!_^0K2/_,\
  433. XM+P`O+?_,3KKS?E!/*T#_R'!8L"W_\&8`_M!(;?_03KKR1EA/8`#^PB!26)(BQ
  434. XM4"M)_\QF"$'Z`-@K2/_,(&W_S$H89OQ3B)'M_\PK2/_D("W_\DJ`:R:QP&\B_
  435. XM*T#_Y&`<<`$K0/_D(%)8DB`0&T#_T$(M_]%@!G``8```C"`M_^0B+?_VLH!L2
  436. XM"'0`*T+_]F`$D:W_]DH'9S93K?_D;1AP`"!M_\P0&"\`*TC_S"!M`!!.D%A/*
  437. XM8.)3K?_V;4AP`!`M__LO`"!M`!!.D%A/8.A3K?_V;1)P`!`M__LO`"!M`!!.A
  438. XMD%A/8.A3K?_D;1AP`"!M_\P0&"\`*TC_S"!M`!!.D%A/8.(@"TS?#.1.74YU<
  439. XM``!.5?_T2.<!,"9O`"`D;P`D*VT`$/_V'AI*!V<T<"6^`&8BL!)F!%**8!HOO
  440. XM"TAM__8O"F$`_!9/[P`,*T#_^F<$)$!@TG``$`<O`$Z36$]@QDS?#(!.74YU9
  441. XM``!.5?_P2.<A,B9O`"P,K````"`&AFP``(80$W(@L`%G#'()L`%G!G(*L`%FP
  442. XM!%*+8.A*$V=H("P&AN6`4JP&AD'L!H[1P"1(<"*P$V8F4HLDBTH39PIP(K`3J
  443. XM9P12BV#R2A-F#$AX``%.N@(D6$]@GD(;8)HDBTH39Q@0$W(@L`%G$'()L`%G/
  444. XM"G(*L`%G!%*+8.1*$V8"8`9"&V``_W)*K`:&9@8@;`,\8`1![`:.*4@&BDJLQ
  445. XM!H9F?$/Z`21-[`9,+-DLV2S9+-D\D2)L`SP@:0`D2'@`*"\H``1(;`9,3KKPW
  446. XM8D_O``PL;`8\0>P&3"(()#P```/N3J[_XBE`!/@I0`4`<A`I003\*4`%""E!\
  447. XM!03E@"M`__`L>``$D\E.KO[:(&W_\")`(V@`"`"D?@`K0/_T8"HL;`8\3J[_P
  448. XMRBE`!/A.KO_$*4`%`$'Z`*8B""0\```#[4ZN_^(I0`4(?A`@!P!`@`&!K`3TE
  449. XM(`<`0(`"@:P$_`"L``"``P4$2JP!9&<$<`!@!B`\``"``"X`0JP!&"`'`$``B
  450. XM`2E``11P`2E``3H@!P!```(I0`$V<`(I0`%<(`<`0`"`*4`!6$'Z!#(I2`,P3
  451. XM+RP&BB\L!H9.N@`F0I=.NO543.U,A/_<3EU.=6-O;CHQ,"\Q,"\S,C`O.#`OQ
  452. XM`"H`3OD`````````````2.<P,BQO`#@@;P`8(F\`'"1O`"`F;P`D("\`*"(O=
  453. XM`"PD+P`P)B\`-$ZN_J1,WTP,3G4``"\+)F\`"$JK`!1G#`@K``,`&V8$<`!@Z
  454. XM-B\L`G!.NO*>6$\G0``$)T``$$J`9@IP#"E`!CAP_V`6)VP"<``4<//!JP`8F
  455. XM<``G0``,)T``""9?3G4``````````'!A2.<'`"XO`!`@+`#@4X`L`$I&:S`@$
  456. XM!DC`YX!![`3T*C`(`$H%9QH(!0`$9A0@!DC`YX!![`3T+S`(!$ZZ]N183U-&>
  457. XM8,PO!TZZY\183TS?`.!.=0``("\`""!O``1.5?_T(D]L!A#\`"U$@'(*3KKWE
  458. XM)`9!`#`2P4J`9O`0X;_)9OI"$"`(3EV0KP`$3G5.5?_H2.<!,BXO`#1*AVX&4
  459. XM</]@``#2<`B^@&0"+@`@!U:`+@`"1__\)&T`""`M``C0A]^L`/1![`#P)E`K<
  460. XM0/_P*TC_]"`+9P``D"!+("L`!-'`*TC_[")M__"WR6,0)(LE1P`$+&W_]"R*R
  461. XM<`!@>+?)9AHL4R2.("L`!"(`TH<E00`$+&W_]"R*<`!@6K7(9`B?K`#T</]@0
  462. XM3K7(9BQ*DV<.(%.SR&,(GZP`]'#_8#C?JP`$2I-G#K/39@H@*0`$T:L`!":1H
  463. XM<`!@'BM+__0K;?_L_^@F4V``_VX@;?_T((I"DB5'``1P`$S?3(!.74YU``!(2
  464. XMYP<P+B\`&"9O`!PL+P`@+P=.NO:46$\D0"`*9@1P_V`>+P8O"R\J``1.NO08S
  465. XM3^\`#"H`2JP#&&<$</]@`B`%3-\,X$YU```@;P`$(F\`""`O``QO%K/(90S1)
  466. XMP-/`$R!3@&;Z3G42V%.`9OI.=0``3E7_^$CG`#!'[`#\(`MG#$JK`!AG!B1++
  467. XM)E-@\"`+9B)(>``B3KKP3EA/)D!*@&8$<`!@'"2+<"%R`"!+$,%1R/_\+PLO\
  468. XM+0`,+RT`"$ZZ\.Y,[0P`__!.74YU``!(YP,0)F\`$`@K``$`&V<0+PM(>/__*
  469. XM3KKGR%!/+@!@`GX`<`S`JP`89A1*JP`49PXO*P`4+RL`$$ZZ_@I03T*K`!@O6
  470. XM*P`<3KH""%A/+`!P_[Z`9P9*AF8"<`!,WPC`3G5.5?^H2.<!`BQX``1#^@".3
  471. XM<`!.KOW8*T#_J&8*2'@`%$ZZ_3983WX`(&P#2!XH__\@!T/M_[!@`A+84X!D;
  472. XM^D(U>+!![?^P*4@"@"\M_ZA(>``H2'@`^G``+P`O`$AL`IQR`"\!2&P"B"\!^
  473. XM3KK\7$AX`!1.NOSD3.U`@/^@3EU.=2HJ(%-T86-K($]V97)F;&]W("HJ``!%Y
  474. XM6$E4``!I;G1U:71I;VXN;&EB<F%R>0```````````'!A3E7_F$CG,P)^`"!LT
  475. XM`T@>*/__<$^^@&\"+@`@!T/M_Z]@`A+84X!D^D(U>*\L>``$D\E.KO[:*T#_-
  476. XMIB!`2J@`K&=2(B@`K.6!(D$L*0`X2.T``O^>2H9F!"PH`*!*AF<T+&P&/"(&8
  477. XM0?H`LB0(=@M.KO_0($=2AR`(&[P`"@BO+&P&/"(&)@=![?^O)`A.KO_0</]@V
  478. XM4BQX``1#^@",<`!.KOW8*T#_FF8$</]@.D'M_Z\I2`+0+RW_FDAX`#Q(>`#Z%
  479. XM<``O`"\`2&P"[$AL`MA(;`+$0J=.NOLZ3^\`)%.`9P1P_V`"<`!,WT#,3EU.O
  480. XM=2HJ(%5S97(@06)O<G0@4F5Q=65S=&5D("HJ``!#3TY424Y510``04)/4E0`#
  481. XM*BHJ($)R96%K.B``:6YT=6ET:6]N+FQI8G)A<GD`2.<!$"XO``PO!TZZ\X!85
  482. XM3R9`(`MF!'#_8"@(*P`$``-G!G``)H!@&B\K``1.NO):6$]P`":`2JP#&&<$C
  483. XM</]@`G``3-\(@$YU+P=P`"(\```P`"QX``1.KO[.+@`"AP``,`!*AV<@2JP#3
  484. XM,&<:(&P#,$Z02H!F`F`.0JP#,$AX`!1.NOKF6$\N'TYU8;Q.=0`````#[```1
  485. XM``$````!```8I@````(````"````%`````H````````#\@```^D```%]O^P#O
  486. XM!&4`!;)(YP<0+B\`%"9O`!AP`;Z`;P`!'BP`O(=L``$\(`;E@"!S"`!P+;`0<
  487. XM9@``@'H!(`;E@"\S"`!.N@6$6$^Z@&P``.H@!N6`(',(`-'%$!!(@`1``&-G0
  488. XM%@1```MG'%M`9B00+`3O4@`90`3O8#H0+`3N4@`90`3N8"YP`!E`!.\90`3N4
  489. XM8")*+`3N9AP@!N6`(',(`-'%$!!(@$C`+P!(;```3KH%/E!/4H5@A"`&Y8!(S
  490. XM;``:+S,(`$ZZ!/Y03RE``TQG/$HL!.YG%"`&Y8`O,P@`2&P`'$ZZ!1!03V`2*
  491. XM(`;E@"\S"`!(;``Z3KH$_%!/80``;"\L`TQ.N@366$]@+$HL!.YG%"`&Y8`OS
  492. XM,P@`2&P`1$ZZ!-103V`2(`;E@"\S"`!(;`!B3KH$P%!/4H9@`/[H2BP$[F<,3
  493. XM2&P`>$ZZ!(Q83V`*2&P`FDZZ!(!83TAX``I.N@2"6$],WPC@3G6_[`,$90`$&
  494. XM3DCG!P!^`'P`>@!P`"E`!.HI0`3F0BP#4!`L`U`,``#_9P``W"\L`TQA``.HF
  495. XM6$\90`-0<`&^@&8,$"P#4'(JL`%G`GX`$"P#4$B`!$``"F<H!$``&&=D4T!G,
  496. XM,EE`9V)70&=,6T!G1`1``"UG+@1``!]G5%5`9U1@5$'L`U%",%@`+P5A``%VC
  497. XM6$]Z`&!`<`&PK`3F9CAA``!N8#(O+`-,80`#,EA/&4`#4&`B?@%@'G`!OH!F>
  498. XM&&$``(9@$F$``,Y@#&$``0!@!E*&8`)3ADJ&9@#_2$J'9@#_0A`L`U`,``#_V
  499. XM9P#_-G(*L`%G`/\N($52A4/L`U$B"!.`&`!@`/\<3-\`X$YUO^P#!&4``T(O%
  500. XM+`-,80`"P%A/&4`#4!`L`U`,``#_9Q9R"K`!9Q`O+`-,80`"HEA/&4`#4&#@N
  501. XM3G6_[`,$90`#"B\L`TQA``*(6$\90`-0$"P#4`P``/]G+'(JL`%F%B\L`TQA0
  502. XM``)J6$\90`-0<B^P`6;<8!`O+`-,80`"5%A/&4`#4&#*3G6_[`,$90`"O"\L4
  503. XM`TQA``(Z6$\90`-0$"P#4`P``/]G%G(BL`%G$"\L`TQA``(<6$\90`-08.!.<
  504. XM=;_L`P1E``*$+RP#3&$``@)83QE``U`0+`-0#```_V<6<B>P`6<0+RP#3&$`7
  505. XM`>183QE``U!@X$YU3E7_Y+_L`P1E``)(2.</`"XM``@L!W`"O(!O``&T4X9P1
  506. XM($'L`U&P,&@`9PQP"4'L`U&P,&@`9@IP`;R`;P13AF#>0>P#4D(P:`!P*4'LG
  507. XM`U&P,&@`9@`!>DHL!.YG``%(<`!R`2M!_^PH!BM`_^0K0/_H*T#_\$J$;TQPP
  508. XM($'L`U&P,$@`9PQP"4'L`U&P,$@`9A!*K?_H9RHK1/_P0JW_[&`D2JW_Y&<((
  509. XM<`$K0/_H8!)P*$'L`U&P,$@`9@9P`2M`_^13A&"P*"W_\+B&;B1P*$'L`U&PE
  510. XM,$@`9A1![`-2$;P`*4@`0>P#4T(P2`!@!%*$8-A*K?_L9Q)(;`-12&P`ODZZ^
  511. XM`8903V```,AX`+BM__!L/%.L`2IM&"!L`2)2K`$B0^P#41`Q2``0@'(`$@!@!
  512. XM&D'L`U$0,$@`<@`2`$AL`1XO`4ZZ`2!03R(`4H1@OB`M__#F@'(#DH`J`7@`4
  513. XMN(5L+%.L`2IM$B!L`2)2K`$B<`D0@'(`$@!@$$AL`1Y(>``)3KH`XE!/(@!2D
  514. XMA�>P#4='M__!#Z``!+PE(;`#*3KH`Z%!/8"I*+`3O9Q!(;`-12&P`T$ZZ1
  515. XM`-)03V`42&P#42\L!.I(;`#43KH`N$_O``Q,WP#P3EU.=;_L`P1E``!T2.<!,
  516. XM$"9O``Q3JP`(;0X@:P`$4JL`!'``$!!@""\+3KH`?%A/+@!P"KX`9@Q2K`3JC
  517. XM<``I0`3F8`12K`3F<%R^`&8F4ZL`"&T.(&L`!%*K``1P`!`08`@O"TZZ`$)8*
  518. XM3RX`+PMAE%A/8`(@!TS?"(!.=0``3OD```>43OD``!LL3OD```A,3OD```-H/
  519. XM3OD```&L3OD``!N(3OD```W83OD```8,3OD```F&3OD```(8```#[`````H`3
  520. XM```````%Y```!<P```7>```%T@``!=@```7P```%P```!>H```7&```%N@``$
  521. XM``````/R```#Z@```,!5;G)E8V]G;FEZ960@;W!T:6]N.B`E8PH``'(`+RH*)
  522. XM("H@1G5N8W1I;VYS(&9R;VT@)7,*("HO"@``1DE,13H@)7,*`"\J($9)3$4ZK
  523. XM("5S($Y/5"!04D5314Y4(2`J+PH``$-A;B=T(&]P96X@9FEL92`E<RX*```O,
  524. XM*B!.;R!F:6QE<R!S<&5C:69I960@9F]R(&QF("HO"@``66]U(&UU<W0@<W!EP
  525. XM8VEF>2!A($,@<V]U<F-E(&9I;&4N"@``=F]I9`D)"25S.PH`)7,["@``)7,*A
  526. XM``DE-&0Z("5S"@```````"@`````````````````````````````@`````$>)
  527. XM```````````````````````````````````````````!0```````````````!
  528. XM`````````````````````````````````````````````````````````````
  529. XM````````````````@`````0``"`@("`@("`@("@H*"@H("`@("`@("`@("`@L
  530. XM("`@("`@2!`0$!`0$!`0$!`0$!`0$(2$A(2$A(2$A(00$!`0$!`0@8&!@8&!6
  531. XM`0$!`0$!`0$!`0$!`0$!`0$!`0$0$!`0$!""@H*"@H("`@("`@("`@("`@(":
  532. XM`@("`@("`A`0$!`@("`@("`@("`@*"@H*"@@("`@("`@("`@("`@("`@("!(>
  533. XM$!`0$!`0$!`0$!`0$!`0A(2$A(2$A(2$A!`0$!`0$!"!@8&!@8$!`0$!`0$!5
  534. XM`0$!`0$!`0$!`0$!`1`0$!`0$(*"@H*"@@("`@("`@("`@("`@("`@("`@("A
  535. XM$!`0$"````````(`__\````.``X```````````````#__P````0`!```````"
  536. XM`!QH```"=/__````!``$````````''X`````__\````.``X````````=C@``?
  537. XM``#__P````0`!``````````````"L/__````!``$````````':H`````__\`#
  538. XM```$``0````````=M`````````/L````!0````````+X```"Y````KP```*H5
  539. XD```"E`````0````"```"U````I@```$>````_`````````/R<
  540. X``
  541. Xend
  542. Xsize 10296
  543. END_OF_FILE
  544. if test 14446 -ne `wc -c <'lf.uu'`; then
  545.     echo shar: \"'lf.uu'\" unpacked with wrong size!
  546. fi
  547. # end of 'lf.uu'
  548. fi
  549. if test -f 'makefile' -a "${1}" != "-c" ; then 
  550.   echo shar: Will not clobber existing file \"'makefile'\"
  551. else
  552. echo shar: Extracting \"'makefile'\" \(339 characters\)
  553. sed "s/^X//" >'makefile' <<'END_OF_FILE'
  554. X#
  555. X# Makefile for lf (Lattice 5.0)
  556. X# (c) 1989 Jeff Bevis
  557. X#
  558. X
  559. XOBJS = lf.o
  560. X
  561. XLIBS = lib:lc.lib lib:amiga.lib
  562. XH =  
  563. XRM = delete
  564. XCFLAGS = -ctw
  565. XLNFLAGS = VERBOSE BATCH
  566. XLN = blink
  567. XCC = lc
  568. XSTARTUP = lib:c.o
  569. X
  570. X.c.o:
  571. X             $(CC) $(CFLAGS) $*.c
  572. X
  573. Xlf:        $(OBJS)
  574. X        $(LN) $(STARTUP) $(OBJS) TO $@ LIB $(LIBS) $(LNFLAGS)
  575. X
  576. Xclean:
  577. X                $(RM) #?.o
  578. X
  579. X
  580. END_OF_FILE
  581. if test 339 -ne `wc -c <'makefile'`; then
  582.     echo shar: \"'makefile'\" unpacked with wrong size!
  583. fi
  584. # end of 'makefile'
  585. fi
  586. echo shar: End of archive 1 \(of 1\).
  587. cp /dev/null ark1isdone
  588. MISSING=""
  589. for I in 1 ; do
  590.     if test ! -f ark${I}isdone ; then
  591.     MISSING="${MISSING} ${I}"
  592.     fi
  593. done
  594. if test "${MISSING}" = "" ; then
  595.     echo You have the archive.
  596.     rm -f ark[1-9]isdone
  597. else
  598.     echo You still need to unpack the following archives:
  599.     echo "        " ${MISSING}
  600. fi
  601. ##  End of shell archive.
  602. exit 0
  603. -- 
  604. Mail submissions (sources or binaries) to <amiga@cs.odu.edu>.
  605. Mail comments to the moderator at <amiga-request@cs.odu.edu>.
  606. Post requests for sources, and general discussion to comp.sys.amiga.
  607.